from pathlib import Path
import sys
import os
# 将公共配置中的配置导入
from .common_settings import *

# 配置
# 小目录
BASE_DIR = Path(__file__).resolve().parent.parent
# 将apps目录放入环境遍历  # 以供app间模块互通
sys.path.append(os.path.join(BASE_DIR, 'apps'))
# 将小目录也放到环境变量中，以供各个文件夹间互通
sys.path.append(str(BASE_DIR))
# 由于项目根路径原本就在环境变量中，所以不需要另外添加了
SECRET_KEY = 'django-insecure-lpkwzv=-vq950bvxbr1rf$n=qka^+lf4p(+9_k=0(wkka9wh(c'
DEBUG = True
ALLOWED_HOSTS = ['*']

INSTALLED_APPS = [
    'django.contrib.staticfiles',
    # 注册drf
    'rest_framework',
    # 注册django-simple-captcha
    'captcha',
    # celery定时任务
    'django_celery_beat',
    # 注册app
    'user',
    'captcha_api',
    'school',
    'server_provider',
    'backend',
    'django_filters'
]

MIDDLEWARE = [
    # 解决跨域中间件
    'utils.common_middleware.CorsMiddleWare',
    'utils.common_middleware.BackendLogMiddleWare',
]

ROOT_URLCONF = 'ccsp_api.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': []
        ,
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

WSGI_APPLICATION = 'ccsp_api.wsgi.application'

host = os.environ.get('MYSQL_HOST', '127.0.0.1')
port = os.environ.get('MYSQL_PORT', '3307')
user = os.environ.get('MYSQL_USERNAME', 'user001')
password = os.environ.get('MYSQL_PASSWORD', 'user123?')

# DATABASES = {
#     'default': {
#         'ENGINE': 'django.db.backends.mysql',
#         'NAME': 'ccsp_api',
#         'HOST': host,
#         'PORT': port,
#         'USER': user,
#         'PASSWORD': password
#     }
# }
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'ccsp_api',
        'HOST': '127.0.0.1',
        'PORT': 3307,
        'USER': 'ccsp',
        'PASSWORD': '123456'
    }
}

AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]

LANGUAGE_CODE = 'zh-hans'

TIME_ZONE = 'Asia/Shanghai'

USE_I18N = True

USE_TZ = False

# 静态文件
STATIC_URL = 'static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

# media 文件目录
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'

# 使用redis作为缓存
CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
            "CONNECTION_POOL_KWARGS": {"max_connections": 100}
        },
        'TIMEOUT': None,  # 永不过期
    }
}

# 日志记录
LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'verbose': {
            'format': '%(levelname)s %(asctime)s %(module)s %(lineno)d %(message)s'
        },
        'simple': {
            'format': '%(levelname)s %(module)s %(lineno)d %(message)s'
        },
    },
    'filters': {
        'require_debug_true': {
            '()': 'django.utils.log.RequireDebugTrue',
        },
    },
    'handlers': {
        'console': {
            # 实际开发建议使用WARNING
            'level': 'INFO',
            'filters': ['require_debug_true'],
            'class': 'logging.StreamHandler',
            'formatter': 'simple'
        },
        'file': {
            # 实际开发建议使用ERROR
            'level': 'ERROR',
            'class': 'logging.handlers.RotatingFileHandler',
            # 日志位置,日志文件名,日志保存目录必须手动创建
            'filename': os.path.join(os.path.dirname(BASE_DIR), "logs", f"{os.path.basename(BASE_DIR)}.log"),
            # 日志文件的最大值,这里我们设置300M
            'maxBytes': 300 * 1024 * 1024,
            # 日志文件的数量,设置最大日志数量为10
            'backupCount': 10,
            # 日志格式:详细格式
            'formatter': 'verbose',
            # 文件内容编码
            'encoding': 'utf-8'
        },
    },
    # 日志对象
    'loggers': {
        'django': {
            'handlers': ['console', 'file'],
            'propagate': True,  # 是否让日志信息继续冒泡给其他的日志处理系统
        },
    }
}
